The computer industry is trending towards more and more virtualization at the hardware level. In these environments, operating systems are run on top of a virtual machine monitor or hypervisor, where interaction with the computer hardware by a guest operating system is mediated by a virtualization layer. This allows multiple guest operating systems (OSs), to run concurrently on a single computer, making it possible to run multiple workloads on the same physical machine. Each workload may execute on a different guest OS, with strong isolation between guest OS. This is particularly beneficial for information technology (IT) departments or any operation that requires running multiple workloads or multiple server applications.
Allowing multiple guest OSs to run on a single computer may be accomplished by apportioning hardware resources to each guest OS in a safe yet efficient way. Traditionally, a hypervisor apportions hardware resources by exposing hardware devices to each guest OS as virtual hardware devices. Some physical hardware devices are virtualized by mediating direct access to the physical hardware device. Other physical hardware devices are virtualized by intercepting requests to the underlying device and implementing the requested functionality by utilizing the underlying hardware device in a related way. Still other physical hardware devices are completely emulated. Depending on the amount of intervention and emulation necessary to implement the virtual hardware device, the added cost of executing a function on a virtual hardware device may vary significantly. While mediating access to physical hardware devices may increase the computing cost by a modest percentage, software emulation of a physical hardware device may be extremely costly.
For instance, when a guest OS accesses a virtual hard disk to read a block of data, the hypervisor may intercept the function call. The hypervisor may implement the functionality by allowing direct access to the hard disk, or alternatively by reading a block of data from a file containing the contents of a virtualized hard disk. These two levels of hypervisor intervention may modestly increase the system resources necessary to complete the function call. On the other hand, virtualization of hardware devices such as an Advanced Programmable Interrupt Controller (APIC) may require many multiples of the system resources that are necessary to access a physical APIC.